package com.csx.governance.traffic.condition;

import java.util.Map;

/**
 * @author cuisongxu
 * @date 2023/2/25 11:57
 */
public interface ExpressionExecutor {

    /**
     * 解析表达式
     * @param expressionStatement 表达式字符串
     * @return 解析后的表达式
     */
    ParsedExpression parse(String expressionStatement);

    /**
     * 执行表达式
     * @param parsedExpression 解析后的表达式
     * @param params 需要匹配的参数
     * @param desiredResultType 期望结果类型
     * @param <T> 期望类型
     * @return 期望结果
     */
    <T> T execute(ParsedExpression parsedExpression, Map<String, Object> params, Class<T> desiredResultType);

}
